/**
01_rollup 是一个用于 JavaScript 应用程序的模块打包工具，它能够将多个模块和资源打包成一个文件，以便在浏览器中高效加载。
  1. 什么是 Rollup
  Rollup 是一个 JavaScript 模块打包器，主要用于将 ES6 模块（ESM）打包成浏览器可以使用的格式。它通过静态分析模块依赖关系，生成高效的代码。

  2. 特点
  - 树摇优化（Tree Shaking）：Rollup 能够识别未使用的代码并将其剔除，从而减小打包后的文件体积。
  - 支持多种模块格式：支持 ES6、CommonJS 和 UMD 等模块格式。
  - 插件系统：Rollup 拥有丰富的插件生态，可以扩展其功能，支持各种文件类型的处理（如 CSS、图片等）。
  - 简单配置：配置文件通常比较简单，易于上手。

  3. 基本用法
  - 安装：可以通过 npm 安装 Rollup：
    ```bash
    npm install --save-dev rollup
    ```
  - 配置文件：创建一个 `rollup.config.js` 文件，定义输入、输出和插件等配置。
    ```javascript
    export default {
      input: 'src/index.js',
      output: {
        file: 'dist/bundle.js',
        format: 'iife', // 立即调用函数表达式
      },
      plugins: [
        // 添加插件
      ]
    };
    ```
  - 打包命令：通过命令行运行 Rollup 进行打包：
    ```bash
    npx rollup -c
    ```

  4. 常用插件
  - @rollup/plugin-node-resolve：允许 Rollup 查找在 `node_modules` 中的模块。
  - @rollup/plugin-commonjs：将 CommonJS 模块转换为 ES6，以便 Rollup 可以处理。
  - rollup-plugin-terser：用于代码压缩，减小文件体积。

  5. 优势与劣势
  - 优势：
    - 生成的代码体积小，加载速度快。
    - 适合构建库和组件。
  - 劣势：
    - 对于大型应用程序，可能需要更多的配置和管理。
    - 插件生态相对 Webpack 较少。

  6. 适用场景
  Rollup 适合用于构建 JavaScript 库、组件库以及需要高性能加载的应用程序。在需要优化打包体积和加载速度的场景中，Rollup 是一个不错的选择。

  希望以上总结能帮助你更好地理解 01_rollup 的库打包功能！如果有其他问题，欢迎随时询问。
 */
module.exports = {
  input: "./lib/index.js", // 入口文件
  // 出口
  output: [
    {
      format: "umd",
      name: "utils",
      file: "./build/bundle.umd.js", // 输出文件
    },
    {
      format: "amd",
      file: "./build/bundle.amd.js",
    },
    {
      format: "cjs",
      file: "./build/bundle.cjs.js",
    },
    {
      format: "iife", // 立即调用函数表达式
      name: "utils",
      file: "./build/bundle.browser.js",
    },
  ],
};
